Amazon S3 アクセス制御
参考
基本的な考え方
自AWSアカウント外からアクセスをしない場合は、ブロックパブリックアクセスは全てONにする
自アカウント内のIAMユーザー、ロールなどのポリシーで、許可されていれば見れる
あくまで自アカウント以外からの制御の話となる
制御が必要な場合でもACLは使わずに、バケットポリシーで制御した方が分かりやすくなるので良い
自アカウントでも、ユーザーやロール自体のポリシーで許可されていなければアクセスは出来ない
ブロックパブリックアクセス
大きな枠での設定となり、ACLやバケットポリシーの大元の制御となる
ガードレール的な機能となる
このチェック状態で
ACL自体の操作が出来る・出来ない
ACL設定がされていたとしても、無効状態・有効状態となる
個別の設定項目
新しいアクセスコントロールリスト (ACL) を介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする
ACLを追加、更新することをブロックする
チェックがついているとACLの設定が更新できない
編集画面まで行き、チェックをつけたりはするが、更新の際にs3:PutBucketAclエラーが発生し更新できない
任意のアクセスコントロールリスト (ACL) を介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする
ACLが設定されていたとしても、その設定は無効状態になる
ACLは削除されたわけでなく、あくまで無効な状態であり、このオプションをオフにするとACLは再び有効になる
チェックが付いているとACLの設定は無効になり操作できない
例えば、バケットACLで全員 (パブリックアクセス)に対して、リストの許可をしていたとしても
このチェックが付いていれば、それは無効ということで、アクセスはできない
ブラウザから直アクセスしても見れないし、他のAWSアカウントからも見えない
チェックがついてなければ、設定が有効になるため、ブラウザ直アクセスで見れるようになる
コンソール画面上も
チェックが付いていると、無効ということで、リストなどの表示はされない
チェックが付いていると、有効ということで、リストなどの表示はされる
オブジェクト単位のACLでも同じ動作となる
新しいパブリックバケットポリシーまたはアクセスポイントポリシーを介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする
バケットポリシーを追加、更新することをブロックする
チェックがついているとバケットポリシーの設定が更新できない
編集画面まで行き、チェックをつけたりはするが、更新の際にs3:PutBucketPolicyエラーが発生し更新できない
任意のパブリックバケットポリシーまたはアクセスポイントポリシーを介したバケットとオブジェクトへのパブリックアクセスとクロスアカウントアクセスをブロックする
バケットポリシーが設定されていたとしても、その設定は無効状態になる
バケットポリシーは削除されたわけでなく、あくまで無効な状態であり、このオプションをオフにするとバケットポリシーは再び有効になる
チェックが付いているとバケットポリシーの設定は無効になり操作できない
例えば、バケットポリシーで誰でもアクセスできる権限を設定していたとしても
このチェックが付いていれば、それは無効ということで、アクセスはできない
ブラウザから直アクセスしても見れないし、他のAWSアカウントからも見えない
チェックがついてなければ、設定が有効になるため、ブラウザ直アクセスで見れるようになる
コンソール画面上は
以下のメッセージが表示されている
このバケットに対してブロックパブリックアクセス設定が有効になっているため、パブリックアクセスはブロックされています
設定内容は見れるが、有効な状態になっていないという表示状態
オブジェクト所有者
バケットレベルの設定で、バケットにアップロードされたオブジェクトの所有権を制御する
アクセスコントロールリスト (ACL) を有効または無効にするのに使用できる
デフォルトでは、オブジェクト所有権は「バケット所有者の強制]」設定に設定されている
ACL は無効になっていて、バケット所有者はバケット内のすべてのオブジェクトを所有し、アクセス管理ポリシーのみを使用してデータへのアクセスを管理する
ACL
アクセスコントロールリスト
基本的にはこれは無効にして、バケットポリシーで制御することが推奨されている
何ができる
バケットとオブジェクトへのアクセスを管理するために使用する
バケットACL、オブジェクトACL
ACL を使用して、基本的な読み取り/書き込み許可を他の AWS アカウントに付与できる
利用するためには
オブジェクトの所有者の設定でACLを有効にする
ブロックパブリックアクセスの以下のチェックを外す
新しいアクセスコントロールリスト (ACL) を介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする
チェックが外れてない場合は、「s3:PutBucketAcl」エラーが発生する
被付与者
バケット所有者 (AWS アカウント)
権限が付いた状態
自分のアカウントからならこのバケットの操作ができる
全員 (パブリックアクセス)
だれでも
試しにリストにチェックをして、任意のブラウザからURLを入れて見てみる一覧が見れる
チェックを外せば見えなくなる
Authenticated Users グループ
承認済みのAWSアカウントなら誰でもアクセスできる
リストを許可したら、別アカウントで見ることができる
ブラウザから直アクセスした場合は、認証された状態ではないので見れない
CloudShellやその他認証状態でアクセスすれば見れる
S3 ログ配信グループ
S3のサーバーアクセスログを書き込むAWSのシステム
バケットポリシー
JSONでアクセスの権限を設定することができる
IAMポリシーと同じ書き方
許可するのか、しないのか
Allow、Deny
誰に(プリンシパル)
AWSアカウント、IAMロール、IAMユーザーとか
どんなアクションを
s3:PutObjectとか
どのリソースに対して
基本的にはバケットポリシーを設定しているバケット自体を指定する形になる